﻿//////////-----------------------------------------------------------------------
////////// <copyright file="Frame.cs" company="tuliprules.org">
//////////     Copyright (c) 2010 tuplelister, tuliprules.org.
////////// </copyright>
////////// <summary>This is the Frame class.</summary>
//////////-----------------------------------------------------------------------

////////namespace Tulip.Model
////////{
////////    using System.Collections.Generic;
////////    using System.ComponentModel;
////////    using System.Windows.Markup;
////////    using Collections;

////////    /// <summary>
////////    /// Represents an entity refernece and associated slots for a tuple typel.
////////    /// </summary>
////////    [ContentProperty("Slots")]
////////    public class Frame : ElementBase
////////    {
////////        /// <summary>
////////        /// Initializes a new instance of the Frame class.
////////        /// </summary>
////////        public Frame()
////////        {
////////            this.Slots = new TupleSlots();
////////        }


////////        /// <summary>
////////        /// Gets the collection of slot definitions for this tuple type.
////////        /// </summary>
////////        public string Entity { get; set; }

////////        /// <summary>
////////        /// Gets the collection of slot definitions for this tuple type.
////////        /// </summary>
////////        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
////////        public IList<Slot> Slots { get; private set; }
////////    }
////////}
//-----------------------------------------------------------------------
// <copyright file="ClassFrame.cs" company="tuliprules.org">
//     Copyright (c) 2011 tuplelister, tuliprules.org.
// </copyright>
// <summary>This is the ClassFrame class.</summary>
//-----------------------------------------------------------------------

namespace Tulip.Engine.Models.ClosedWorld
{
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Windows.Markup;
    using Collections;

    /// <summary>
    /// Represents an ontological frame in the closed world model.
    /// </summary>
    [ContentProperty("Slots")]
    public class Frame : ElementBase
    {
        /// <summary>
        /// Initializes a new instance of the Frame class.
        /// </summary>
        public Frame()
        {
            this.Slots = new TupleSlots();
        }

        /// <summary>
        /// Gets or sets the type to which the slot is bound.
        /// </summary>
        public string BoundType { get; set; }

        /// <summary>
        /// Gets or sets the role of the class frame.
        /// </summary>
        public ClassFrameRole Role { get; set; }

        /// <summary>
        /// Gets or sets the class from which this class frame 
        /// inherits.
        /// </summary>
        public string Inherits { get; set; }

        /// <summary>
        /// Gets or sets the metaclass of which this class frame an instance.
        /// </summary>
        public string InstanceOf { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether this class frame is used
        /// as a metaclass.
        /// </summary>
        public bool IsMetaclass { get; set; }

        /// <summary>
        /// Gets the collection of slot definitions for this tuple type.
        /// </summary>
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
// ReSharper disable UnusedAutoPropertyAccessor.Local
        public IList<Slot> Slots { get; private set; }
// ReSharper restore UnusedAutoPropertyAccessor.Local
    }
}

